<?php

class Vendas extends Zend_Db_Table_Abstract
{

    protected $_name = 'vendas';
    protected $_dependentTable = array('VendasGrupo','VendasParticipantes');
    
    public function insert($data)
    {
        if(!$this->isUniqueName($data['evento'])){
            throw new Exception('Este evento já está cadastrado!');
        }
        else {
            if($data['dt_inicio']){
                $date = new Zend_Date($data['dt_inicio'], null, 'pt_BR');
                $data['dt_inicio']          = $date->toString('YYYY-MM-dd');
            }
            if($data['dt_termino']){
                $date = new Zend_Date($data['dt_termino'], null, 'pt_BR');
                $data['dt_termino']          = $date->toString('YYYY-MM-dd');
            }
            if($data['custo_por_tutor']){
                $data['custo_por_tutor']    =  $number = Zend_Locale_Format::getFloat($data['custo_por_tutor']);
            }
            if($data['custo_supervisor']){
                $data['custo_supervisor']   =  $number = Zend_Locale_Format::getFloat($data['custo_supervisor']);
            }
        }
        return parent::insert($data);
    }
    
    public function update(array $data, $where)
    {
        if(!$this->isUniqueName($data['evento'],$data['id'])){
            throw new Exception('Este evento já está cadastrado!');
        }
        else {
            if($data['dt_inicio']){
                $date = new Zend_Date($data['dt_inicio'], null, 'pt_BR');
                $data['dt_inicio']          = $date->toString('YYYY-MM-dd');
            }
            if($data['dt_termino']){
                $date = new Zend_Date($data['dt_termino'], null, 'pt_BR');
                $data['dt_termino']          = $date->toString('YYYY-MM-dd');
            }
            $data['custo_por_tutor']    =  $number = Zend_Locale_Format::getFloat($data['custo_por_tutor']);
            $data['custo_supervisor']    =  $number = Zend_Locale_Format::getFloat($data['custo_supervisor']);
        }
        parent::update($data, $where);
    }
    
    public function isUniqueName($nome, $id = null){
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()->from('vendas')->where('evento = ?', $nome);
        if($id){$select->where('id <> ?',$id);}
        return (count($db->fetchAll($select)) == 0) ? true : false;
    }
    
    public static function getCursos($where = null, $order = null)
    {
        $db        = Zend_Db_Table::getDefaultAdapter();
        $cols      = array('v.*');
        $fabrica   = array('f'  => 'fabrica');
        $vendas    = array('v'  => 'vendas');
        $status    = array('fs' => 'fabrica_status');
        $usuario   = array('u'  => 'usuario');
        
        $select = $db->select()
                     ->from($vendas, $cols);
        if($where){$select->where($where);}
        if($order){$select->order($order);}
        
        $sql = $select->__toString();

        $result = $db->fetchAll($select);
        
        return $result;
        
    }
    
    public static function getGrupo($evento_id)
    {
        $db        = Zend_Db_Table::getDefaultAdapter();
        $cols      = array('f.id', 'f.curso', 'u.nome', 'fs.status');
        $fabrica   = array('f'  => 'fabrica');
        $vendas    = array('v'  => 'vendas');
        $vendas_grupo = array('vg'  => 'vendas_grupo');
        $status    = array('fs' => 'fabrica_status');
        $usuario   = array('u'  => 'usuario');
        
        $select = $db->select()
                ->from($vendas_grupo, $cols)
                ->where('vg.vendas_id = ?',$evento_id)
                ->join($fabrica,    'f.id = vg.fabrica_id')
                ->joinLeft($status,     'fs.id = f.status_id')
                ->joinLeft($usuario,    'u.id = f.responsavel_id')
                ->order('f.curso');
        
        $sql = $select->__toString();

        $result = $db->fetchAll($select);
        
        return $result;
        
    }
    
    public static function getParticipantes($evento_id)
    {
        $db        = Zend_Db_Table::getDefaultAdapter();
        $cols      = array('u.*');
        $fabrica   = array('f'  => 'fabrica');
        $vendas    = array('v'  => 'vendas');
        $status    = array('fs' => 'fabrica_status');
        $usuario   = array('u'  => 'usuario');
        
        $select = $db->select()
                     ->from($vendas, $cols);
        if($where){$select->where($where);}
        if($order){$select->order($order);}
        
        $sql = $select->__toString();

        $result = $db->fetchAll($select);
        
        return $result;
        
    }
}